#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

//void rotate(int* nums, int numsSize, int k)
//{
//    int arr[100000] = { 0 };
//    int i = 0, j = 0;
//    for (i = numsSize - k; i < numsSize; i++)
//    {
//        arr[j] = nums[i];
//        j++;
//    }
//    for (i = 0; i < numsSize - k; i++)
//    {
//        arr[j] = nums[i];
//        j++;
//    }
//    for (i = 0; i < numsSize; i++)
//    {
//        nums[i] = arr[i];
//    }
//}

//void reverse(int* a, int left, int right)
//{
//    while (left < right)
//    {
//        int tmp = a[left];
//        a[left] = a[right];
//        a[right] = tmp;
//        left++;
//        right--;
//    }
//}
//
//void rotate(int* nums, int numsSize, int k)
//{
//    //1 2 3 4 5 6 7         7       3
//    //nums,0,3
//    //nums,4,6
//    //nums,0,6
//    //4 3 2 1 7 6 5
//    //5 6 7 1 2 3 4
//    //
//    //5 6 7 1 2 3 4
//    k = k % numsSize;
//    reverse(nums, 0, numsSize - k - 1);
//    reverse(nums, numsSize - k, numsSize - 1);
//    reverse(nums, 0, numsSize - 1);
//}
//
//int main()
//{
//    int arr[4] = { 5,4,3,2 };//->3 2 5 4
//    rotate(arr, 4, 2);
//    getchar();
//    return 0;
//}


int missingNumber(int* nums, int numsSize) {
    int i = 0, sum = 0;
    for (i = 0; i < numsSize; i++)
    {
        sum ^= i;
        sum ^= nums[i];
    }
    sum ^= numsSize;
    return sum;
}

int main()
{
    int nums[] = { 0,1,2 };
    int i = missingNumber(nums, 3);
    getchar();
    return 0;
}